//
// Created by 陈奕锟 on 2022/11/20.
//

#ifndef AUTOMATICTELLER_SENDER_HPP
#define AUTOMATICTELLER_SENDER_HPP

#endif //AUTOMATICTELLER_SENDER_HPP
#pragma once

#include "message.hpp"

namespace messaging
{
    class sender
    {
    private:
        queue* q;   // * sender类中包装消息队列的指针

    public:
        sender()    // * 以默认构造方式构造的sender类内部不含队列
            : q(nullptr)
        {}

        explicit sender(queue* i_q)
            : q(i_q)
        {}

        template<typename Message>
        void send(Message const& msg)
        {
            if (q)
            {
                q -> template push(msg);    // * 发送操作会向队列添加消息
            }
        }
    };
}